package com.woniu.product.controller;

import com.woniu.common.dto.CartDto;
import com.woniu.common.util.ResponseData;
import com.woniu.product.es.EsSku;
import com.woniu.product.pojo.TProductSku;
import com.woniu.product.service.TProductSkuService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author 杜梅杰
 * @Description
 * @Date 2024/5/21 18:39
 */
@RestController
public class SkuController {
    @Autowired
    TProductSkuService skuService;

    /**
     * 查询商品的详细信息
     */
    @PostMapping("/querySku")
    public ResponseData<?> querySku(Long spuId) {
        return skuService.querySku(spuId);
    }

    /**
     * 用skuId查商品数量
     */
    @PostMapping("/querySkuCount")
    public TProductSku querySkuCount(Long skuId) {
        return skuService.lambdaQuery()
                .eq(TProductSku::getId, skuId)
                .eq(TProductSku::getState,1)
                .one();
    }

    /**
     * 批量修改商品库存
     */
    @PostMapping("/updateStore")
    public void updateStore(List<CartDto> shops) {
        for (CartDto shop : shops) {
            TProductSku sku = skuService.lambdaQuery()
                    .eq(TProductSku::getId, shop.getSkuId())
                    .eq(TProductSku::getState, 1).one();
            sku.setSkuStore(sku.getSkuStore() - shop.getBuyNum());
            skuService.save(sku);
        }
    }

    /**
     * 根据skuId查商品类型和地区
     */
    @PostMapping("/querySkuType")
    public TProductSku querySkuType(Long skuId) {
        return skuService.querySkuType(skuId);
    }

    /**
     * 根据id改好评率
     */
    @PostMapping("/updateComment")
    public void updateComment(Long skuId,String comment) {
        skuService.lambdaUpdate()
                .setSql("comment = '" + comment + "%'")
                .eq(TProductSku::getId,skuId)
                .update();
    }


    /**
     * 用skuId查积分商品数量
     */
    @PostMapping("/queryJifenSkuCount")
    public TProductSku queryJifenSkuCount(Long skuId) {
        return skuService.lambdaQuery()
                .eq(TProductSku::getId, skuId)
                .eq(TProductSku::getState, 2)
                .one();
    }
    @PostMapping("/querySkuById")
    public ResponseData<?> querySkuById(Long skuId) {
        return skuService.querySkuById(skuId);
    }

    @Autowired
    private EsSku esSku;

    @GetMapping("/initSku")
    @ApiOperation(value = "初始化SKu到es",notes = "初始化SKu到es")
    public String initSku() {
        esSku.saveAll(skuService.list());
        return "初始化成功";
    }

    @GetMapping("/skuAllEs")
    @ApiOperation(value = "查询Es的SKU数据",notes = "查询Es")
    public Iterable<TProductSku> skuAllEs() {
        return esSku.findAll();
    }

    @PostMapping("/skuAllEs")
    @ApiOperation(value = "查询Es的SKU数据",notes = "查询Es")
    public Iterable<TProductSku> sluAllEs(String describe) {
        return esSku.findSkuBySkuDescribe(describe);
    }

    @PostMapping("/queryEsSku")
    public ResponseData<TProductSku> queryEsSku(String describe) {
        esSku.saveAll(skuService.queryAllDetail());
        List<TProductSku> skuBySkuDescribe = esSku.findSkuBySkuDescribe(describe);
        return new ResponseData<>().ok(skuBySkuDescribe);

    }
}
